home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -in_the_mag- / workbench / scanning / scantrax / archiv / example.rexx < prev    next >
OS/2 REXX Batch file  |  2000-03-05  |  8KB  |  319 lines

  1. /*
  2.     <Example ARexx-Script V1.1 for ScanTraxV2.1>
  3.     <ScanTrax is © by Klaus Krause>
  4.  
  5. --------------------------------------------------------------------------------
  6. Important change since ScanTrax V2.0:
  7. Two ARexx commands are need now a special handling: SCAN & SAVE_PICTURE
  8. Since 2.0 you will get back the control immediately after command call.
  9.  
  10. First: To get no problems you must insure that ScanTrax is not busy!
  11. Use GET_REXX_STATUS to get the ScanTrax status condition.
  12.  
  13. Second: If you initialize a scan, you must know when the scan has finished.
  14. Use GET_REXX_STATUS again, to get the ScanTrax status condition.
  15.  
  16. This command should be periodically called, until a 'READY' status was returned.
  17. To waste no CPU time, you should use this command only about every 0.5 second.
  18.  
  19. This was realised with the DOS function 'Delay()' which is included
  20. in the 'rexxsupport.library'.
  21. After a 'GET_REXX_STATUS' call, you should call this Delay function.
  22. The delay function will put your RexxTask into sleep mode until waiting time
  23. has elapsed. While in sleep modetime, other tasks will have the full CPU power!
  24.  
  25. In this example a set of subfunctions are used, which will do ALL necassary
  26. steps for you.
  27.  
  28. The following subfunctions are included in the subfunctionblock:
  29. InitRexxSupport()  -> Insert the library into the library-list
  30. ScanPicture()      -> Scan data into a tempfile
  31. Savepicture()      -> Convert data of tempfile into a real picture
  32. WaitUntilReady()   -> Wait until ScanTrax is ready for a new command
  33. ScanTraxReady()    -> Get logical status, returns '1' on a ready condition
  34.  
  35. To use these functions in your own project, simply add the subfunctionblock
  36. at the end of this example to your ARexx-Script and watch this example how
  37. to use these.
  38. --------------------------------------------------------------------------------
  39. */
  40.  
  41.  
  42. OPTIONS RESULTS
  43.  
  44. ADDRESS "SCANTRAX"
  45.  
  46. CALL InitRexxSupport() /*Insert Library into list {get access to Delay()} */
  47.  
  48.  
  49.  
  50.  
  51. say "ScanTrax ARexx Demonstration:"
  52.  
  53. GET_REXX_VERSION
  54. say " Rexx Version   = " RESULT
  55. say
  56. say
  57. /* "To insure that you have the only access to ScanTrax,"
  58.    "you must lock the User-Interface. Otherwise the user can"
  59.    "disturb your project..."
  60. */
  61. DISPLAY_LOCK
  62.  
  63. say "A look at the current ARexx-picture-setup:"
  64. GET_INTENSITY
  65. say " Intensity   = " RESULT "%"
  66. GET_CONTRAST
  67. say " Contrast    = " RESULT "%"
  68. GET_COLOR_RED
  69. say " Color Red   = " RESULT "%"
  70. GET_COLOR_GREEN
  71. say " Color Green = " RESULT "%"
  72. GET_COLOR_BLUE
  73. say " Color Blue  = " RESULT "%"
  74. GET_SHARPEN
  75. say " Sharpen     = " RESULT "%"
  76. GET_GAMMA
  77. say " Gamma       = " RESULT
  78. GET_JPEG_QUALITY
  79. say " JPEG-Quality= " RESULT
  80. say
  81.  
  82. say "------------------------------------------------------------"
  83. say
  84. say "Short example for setting the graphic mode:"
  85. say
  86. say "Adjusting the graphic-mode to BlackWhite Treshold."
  87. SET_GFX_MODE BLACKWHITE
  88. GET_GFX_MODE
  89. say " ( This mode has the internal number: " RESULT ")"
  90. say
  91. say "Adjusting the graphic-mode to 8bit GreyScale."
  92. SET_GFX_MODE GREYSCALE
  93. GET_GFX_MODE
  94. say " ( This mode has the internal number: " RESULT ")"
  95. say
  96. say "Adjusting the graphic-mode to number 2."
  97. SET_GFX_MODE NUMBER 2
  98. GET_GFX_MODE
  99. say " ( Mode changes to internal number: " RESULT ")"
  100. say
  101. say "You want finally scan in 24bit color."
  102. SET_GFX_MODE COLOR
  103. GET_GFX_MODE
  104. say " ( This mode has the internal number: " RESULT ")"
  105. say
  106.  
  107. say "------------------------------------------------------------"
  108. say
  109. say "You enable filename-suffixes."
  110. SET_SUFFIX_MODE 1
  111. GET_SUFFIX_MODE
  112. say " ( Current filename-suffix logical status is now: " RESULT ")"
  113. say
  114. say "Setting intensity to 0 %"
  115. SET_INTENSITY '0'
  116. say
  117. say "Setting contrast  to 14 %"
  118. SET_CONTRAST '14'
  119. say
  120. say "Setting sharpness to 50 %"
  121. SET_SHARPEN '50'
  122. say
  123. say "Setting gamma     to 2.20"
  124. SET_GAMMA '2.2'
  125. say
  126.  
  127. GET_RESOLUTION XMIN
  128. x_min = RESULT
  129. GET_RESOLUTION XMAX
  130. x_max = RESULT
  131. say "Your horizontal resolution range is "x_min" to "x_max" dpi!"
  132. GET_RESOLUTION YMIN
  133. y_min = RESULT
  134. GET_RESOLUTION YMAX
  135. y_max = RESULT
  136. say "Your vertical resolution range is "y_min" to "y_max" dpi!"
  137. say
  138.  
  139. say "Setting scan resolution to 75 x 75 dpi."
  140. SET_RESOLUTION 75 75
  141. say
  142.  
  143. GET_SCALE XMIN
  144. x_min = RESULT
  145. GET_SCALE XMAX
  146. x_max = RESULT
  147. say "Your horizontal scaling range is "x_min" to "x_max" %!"
  148. GET_SCALE YMIN
  149. y_min = RESULT
  150. GET_SCALE YMAX
  151. y_max = RESULT
  152. say "Your vertical scaling range is "y_min" to "y_max" %!"
  153. say
  154.  
  155. say "Setting a 100 x 100 % Scale."
  156. SET_SCALE 100 100
  157. say
  158.  
  159. say
  160. say "Setting centimeters as input unit for length values."
  161. SET_MEASUREUNIT CM
  162. say
  163. GET_WINDOW XMAX
  164. x_max = RESULT
  165. GET_WINDOW YMAX
  166. y_max = RESULT
  167. say "Your maximal flatbed scanarea is "x_max" x "y_max" cm!"
  168. say
  169. say "Setting your ScanWindow to: 12.5 x 8 cm in Size, with an 5 x 5 cm Offset."
  170. SET_WINDOW 5 5 12.5 8
  171.  
  172. SET_PROGRESSBAR_MODE 1 /*Enable a progress bar!*/
  173.  
  174. say "Now you are ready to start a scan, scanning into tempfile...."
  175. success = ScanPicture()
  176. IF success = 1
  177.  THEN say "Your scan was successful :-)"
  178.  ELSE DO /*Error: The script ends at this point*/
  179.     IF success = -1 THEN say "Last command was aborted :-("
  180.    IF success = 0 THEN say "An error has occured with last command :-("
  181.     DISPLAY_UNLOCK
  182.     CALL CloseRexxSupport()
  183.     EXIT 10
  184.  END
  185.  
  186. say
  187. say "Saving some pictures from our tempfile file..."
  188. say
  189. say
  190. say "|---PNG-EXAMPLE---------------------------------------------"
  191. say "|Create an Icon for this and all following pictures:"
  192. SET_ICON_MODE 1
  193. GET_ICON_MODE
  194. say "| ( Icon-Creation was set to logical number: " RESULT ")"
  195. say "|Selecting a fast PNG compressionrate..."
  196. SET_PNG_COMPRESSION 3
  197. say "|Writing a PiNG picture to ram:Testpicture..."
  198. success = SavePicture(PNG 'RAM:Testpicture')
  199. say "|Logical result of write: " success
  200. say
  201.  
  202. say "|---JPEG-EXAMPLE--------------------------------------------"
  203. say "|Setting JPG Quality to 45"
  204. SET_JPEG_QUALITY 45
  205. say "|Writing a JPEG picture to ram:Testpicture..."
  206. success = SavePicture(JPEG 'RAM:Testpicture')
  207. say "|Logical result of write: " success
  208. say
  209.  
  210. say "|---TARGA-EXAMPLE-------------------------------------------"
  211. say "|Writing a TARGA picture to ram:Testpicture..."
  212. success = SavePicture(TARGA 'RAM:Testpicture')
  213. say "|Logical result of write: " success
  214. say
  215.  
  216. say "|---DEEP-EXAMPLE--------------------------------------------"
  217. say "|Writing a IFF-DEEP picture to ram:Testpicture..."
  218. success = SavePicture(DEEP 'RAM:Testpicture')
  219. say "|Logical result of write: " success
  220. say
  221.  
  222. say "|---ILBM-EXAMPLE--------------------------------------------"
  223. say "|Switching IFF-ILBM compression to ON"
  224. SET_ILBM_COMPRESSION 1
  225. say "|Writing a IFF-ILBM picture to ram:Testpicture..."
  226. success = SavePicture(ILBM 'RAM:Testpicture')
  227. say "|Logical result of write: " success
  228. say
  229.  
  230. say "|---JPEG-EXAMPLE-(a-background-write)-----------------------"
  231. SET_PROGRESSBAR_MODE 0
  232. SET_ICON_MODE 0
  233. say "|Setting JPG Quality to 5"
  234. SET_JPEG_QUALITY 5
  235. say "|Writing a JPEG picture to ram:Testpicture..."
  236. success = SavePicture(JPEG 'RAM:TestpictureSecret')
  237. say "|Logical result of write: " success
  238. say
  239.  
  240.  
  241.  
  242. /*---SHUT-DOWN---*/
  243. DISPLAY_UNLOCK          /*UnLock the User-Interface*/
  244.  
  245.  
  246.  
  247.  
  248.  
  249. say "-EXAMPLE-RESULTS-------------------------------------------"
  250. say "Looking into the RamDisk for your pictures:"
  251. ADDRESS COMMAND "C:list ram:Testpicture#?"
  252. say
  253. say "ARexx example has finished. Thanks for watching this :-)"
  254.  
  255. EXIT 0 /* END OF EXAMPLE SCRIPT */
  256.  
  257.  
  258.  
  259.  
  260.  
  261. /*-------------------SUB-FUNCTION-BLOCK---------------------*/
  262.  
  263. InitRexxSupport:
  264.     IF ~SHOW('L', "rexxsupport.library") THEN
  265.         IF ~ADDLIB('rexxsupport.library', 0, -30,0) THEN EXIT 10
  266.     return 1
  267. /* END of InitRexxSupport() */
  268.  
  269. WaitUntilReady:
  270.     DO FOREVER
  271.         GET_STATUS
  272.         IF RC ~= 0 THEN return 0
  273.         IF RESULT = 'READY' THEN return 1
  274.         call delay(25)
  275.     END
  276. /* END of WaitUntilReady() */
  277.  
  278. ScanTraxReady:
  279.     GET_STATUS
  280.     IF RC ~= 0 THEN return 0
  281.     IF RESULT = 'READY' THEN return 1
  282.     IF RESULT = 'ABORT' THEN return 1
  283.     return 0
  284. /* END of ScanTraxReady() */
  285.  
  286. ScanPicture:
  287.     CALL WaitUntilReady()
  288.     SCAN
  289.     IF RC ~= 0 THEN return 0
  290.  
  291.     DO FOREVER
  292.         call delay(25)
  293.  
  294.         GET_STATUS
  295.         IF RC ~= 0 THEN return 0
  296.         IF RESULT = 'READY' THEN return 1
  297.         IF RESULT = 'ABORT' THEN return -1
  298.     END
  299. /* END of ScanPicture() */
  300.  
  301. SavePicture:
  302.     parse arg keyword1 name1
  303.     CALL WaitUntilReady()
  304.     SAVE_PICTURE strip(keyword1) strip(name1)
  305.     IF RC ~= 0 THEN return 0
  306.  
  307.     DO FOREVER
  308.         call delay(25)
  309.  
  310.         GET_STATUS
  311.         IF RC ~= 0 THEN return 0
  312.         IF RESULT = 'READY' THEN return 1
  313.         IF RESULT = 'ABORT' THEN return -1
  314.     END
  315. /* END of ScanPicture() */
  316.  
  317. /*--END-OF-----------SUB-FUNCTION-BLOCK---------------------*/
  318.  
  319.